package com.shujia.scala

object Demo6Class {

  def main(args: Array[String]): Unit = {

    //通过样例类创建对象的时候可以省略new关键字
    val dog = Dog("布丁", 2)

    println(dog)

    println(dog.name)
    println(dog.age)

    dog.name = "大黄"

    val pig = Pig("小猪", 2)


  }
}


/**
  * 样例类   相当于java中的自定义类
  * 在编译的过程中会自动加上equals  toString  hashcode 方法
  *
  */

case class Dog(var name: String, var age: Int)


/**
  *
  * 样例类底层实现方式
  *
  */
class Pig(name: String, age: Int) {
  val _name: String = name
  val _age: Int = age
}

//伴生对象
object Pig {

  /**
    * apply  直接可以使用 对象名调用
    *
    */
  def apply(name: String, age: Int): Pig = {

    return new Pig(name, age)
  }

}










